using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;


[Serializable]
public class User
{
    public string name = "";
    public int Id = 0;
    public string openId = "";
    public bool 注册 = false;

    public int cur性别 = 1;
    public int 女性皮肤 = 0;
    public int 男性皮肤 = 0;
    public int 装饰Data = 0;


    private List<char> 转化装饰二进制(int 最少)
    {
        string s二进制 = Convert.ToString(装饰Data,2);
        int len = s二进制.Length;
        if (len < 最少 + 1)
        {
            string 位数 = "";
            for (int i = len; i < 最少 + 1; i++)
            {
                s二进制 = "0" + s二进制;
            }
        }
        
        List<char> split = s二进制.ToList();
        return split;
    }

    public List<皮肤装饰> Get使用的装饰()
    {
        List<char> split = 转化装饰二进制(0);
        List<皮肤装饰> res = new List<皮肤装饰>();
        for (int i = split.Count-1; i >=0; i--)
        {
            int index = split.Count - i-1;
            if (split[i].ToString() == "1")
            {
                皮肤装饰 it = (皮肤装饰) index;
                res.Add(it);
            }
        }
        return res;
    }

    public int Get使用的皮肤Index(皮肤部位 type,int sex,string 皮肤数据位数,int index)
    {
        if (type == 皮肤部位.装饰)
        {
            List<char> split = 转化装饰二进制(index);
            int targetIndex = split.Count - index-1;
            int res = 0;
            if (split.Count > targetIndex && targetIndex >= 0)
            {
                int.TryParse(split[targetIndex].ToString(), out res);
            }
            return res;
        }
        else
        {
            List<string> 每两位 = 皮肤数据分割(sex,皮肤数据位数);

            string s目标 = 每两位[type.GetHashCode()-1];
            int n目标 = 0;
            int.TryParse(s目标, out n目标);
            return n目标;
        }
    }

    private List<string> 皮肤数据分割(int Sex,string 皮肤数据位数)
    {
        int 数据 = 0;
        if (Sex == 0)
        {
            数据= 女性皮肤;
        }
        else
        {
            数据 =男性皮肤;
        }
        
        string s数据 = 数据.ToString(皮肤数据位数);
        List<string> 每两位 = new List<string>();

        int index = 0;
        string 一个数据 = "";
        foreach (var VARIABLE in s数据)
        {
            一个数据 += VARIABLE;
            index++;
            if (index % 2 == 0)
            {
                每两位.Add(一个数据);
                一个数据 = "";
                index = 0;
            }
        }
        return 每两位;
    }

    public void 更新装饰(int index,int 使用)
    {
        var s二进制 = 转化装饰二进制(index).Select(s=>s.ToString()).ToList();
        int targetIndex = s二进制.Count - index-1;
        s二进制[targetIndex] = 使用.ToString();
        string s = "";
        foreach (var VARIABLE in s二进制)
        {
            s += VARIABLE;
        }

        int id = Convert.ToInt32(s, 2);
        Debug.Log("保存结果："+id);
        装饰Data = id;
    }
    public void 更新皮肤(皮肤Data data,string 皮肤数据位数)
    {
        var 分割 = 皮肤数据分割(data.Sex, 皮肤数据位数);
        int index = data.Type.GetHashCode()-1;
        分割[index] = data.Index.ToString("00");
        string 组合 = "";
        foreach (var VARIABLE in 分割)
        {
            组合 += VARIABLE;
        }

        int 新数据 = 0;
        int.TryParse(组合, out 新数据);
        if (data.Sex == 0)
        {
            女性皮肤 = 新数据;
        }
        else
        {
            男性皮肤 = 新数据;
        }
    }

    public void 更新性别(int i)
    {
        cur性别 = i;
        M.Event.DoEvent(完成任务条件.确认形象.ToString(),i);
    }
}
